﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Wormhole.Engine.CardLibrary.BaseCardTypes;
using Wormhole.Engine.CardLibrary.CardProperties;

namespace Wormhole.Engine.CardLibrary.CardTypes
{
	/// <author>RodneyMcKay</author>
	/// <date>04 April 2008</date>
	/// <summary>
	/// The base class for mission cards.
	/// </summary>
	public abstract class Mission : Card
	{
		#region Properties

		/// <summary>
		/// The mission type.
		/// </summary>
		public abstract Skill Type { get; }

		/// <summary>
		/// The glyp that will be earned when the mission is succesfull.
		/// </summary>
		public abstract Glyph Glyph { get; }

		/// <summary>
		/// The mission difficulty.
		/// </summary>
		public abstract int Difficulty { get; }

		/// <summary>
		/// The exxperience that will be earned when the mission is completed.
		/// </summary>
		public abstract int Experience { get; }

		#region Traits
		private CardProperties.Traits _traits;
		/// <summary>
		/// The card traits.
		/// </summary>
		public override CardProperties.Traits Traits
		{
			get
			{
				if (this._traits == null)
				{
					this._traits = new CardProperties.Traits();
					this._traits.Add(CardProperties.Trait.Mission);
				}

				return this._traits;
			}
		}
		#endregion

		#endregion

		#region Constructor
		/// <summary>
		/// Initialize a new instance of the class.
		/// </summary>
		/// <param name="owner">The card owner.</param>
		public Mission(Player.Player owner)
			: base(owner)
		{

		}
		#endregion
	}
}
